﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Common;
using BusinessLayer;

namespace BoletoElectronicoDesktop.AbmClientes
{

    public partial class FormClientesList : FormListDelete
    {
        public FormClientesList(Util.Funcionalidad Use): base(Use)
        {
            InitializeComponent();
        }

       

        private int selectedId;
        public int SelectedId
        {
            get
            {
                try
                {

                    if ((dsBoleto.ClienteRow)((DataRowView)(dgwClientes.CurrentRow.DataBoundItem)).Row != null)
                    {
                        selectedId = ((dsBoleto.ClienteRow)((DataRowView)(dgwClientes.CurrentRow.DataBoundItem)).Row).IdCliente;
                    }
                }
                catch (Exception)
                {
                    selectedId = 0;
                }
                return selectedId;
            }
            set
            { selectedId = value; }
        }


        private void FormClientesList_Load(object sender, EventArgs e)
        {
            cargarCombos();
        }

        private void cargarCombos()
        {
            CargarProvincias();
            CargarTipoDNI();
        }
        private void CargarProvincias()
        {
           

            cbProvincia.DataSource = BizProvincia.GetProvincias().Provincia;
            cbProvincia.DisplayMember = "Descripcion";
            cbProvincia.ValueMember = "IdProvincia";

            cbProvincia.SelectedItem = null;
            
        }
        private void CargarTipoDNI()
        {
            cbTipoDNI.DataSource = BizTipoDNI.GetTipoDNIs().TipoDNI;
            cbTipoDNI.DisplayMember = "Descripcion";
            cbTipoDNI.ValueMember = "IdTipoDNI";

            cbTipoDNI.SelectedItem = null;
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            buscar();
        }
        public void buscar()
        {
            OnDGWDeselectedItem();
            int dni = 0;
            if(!String.IsNullOrEmpty(txtDNI.Text))
                int.TryParse(txtDNI.Text,out dni);

            int idTipoDNI = 0;
            if (cbTipoDNI.SelectedItem != null)
                idTipoDNI = int.Parse(cbTipoDNI.SelectedValue.ToString());

            int idProvincia = 0;
            if (cbProvincia.SelectedItem != null)
                idProvincia = int.Parse(cbProvincia.SelectedValue.ToString());
          
            dsBoleto ds =  BizCliente.getClientes(txtNombre.Text, txtApellido.Text, idTipoDNI, dni, idProvincia, "", "", "", 0, 0, "");
            if (ds.Cliente.Count != 0)
            {
                dgwClientes.DataSource = ds.Cliente;
                
            }
            else
            {
                MessageBox.Show("No existen registros para el criterio de busqueda ingresado.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            

        }
        private void btnNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                FormAbmClientes frm;
                if (this.MdiParent.MdiChildren.Any(f => f is FormAbmClientes))
                {
                    frm = (FormAbmClientes)this.MdiParent.MdiChildren.First(f => f is FormAbmClientes);
                }
                else
                {
                    frm = new FormAbmClientes(0, Util.Funcionalidad.ClienteAlta);
                    frm.MdiParent = this.MdiParent;
                }

                frm.Show();
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message);
            }

           
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            modificar();
        }

        private void modificar()
        {
            try
            {
                FormAbmClientes frm;
                if (this.MdiParent.MdiChildren.Any(f => f is FormAbmClientes))
                {
                    frm = (FormAbmClientes)this.MdiChildren.First(f => f is FormAbmClientes);
                }
                else
                {
                    frm = new FormAbmClientes(SelectedId, Util.Funcionalidad.ClienteModificacion);
                    frm.MdiParent = this.MdiParent;
                }

                frm.Show();
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message);
            }

      
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            eliminar();
        }
        private void eliminar()
        {
            BizCliente.DeleteCliente(SelectedId);
            MessageBox.Show("El cliente se ha eliminado");
            buscar();
        }

        private void dgwClientes_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1)
                OnDGWSelectedItem();
        }
        private void OnDGWSelectedItem()
        {
            dsBoleto.ClienteRow cr = (dsBoleto.ClienteRow)((DataRowView)(dgwClientes.CurrentRow.DataBoundItem)).Row;
            switch (dgwClientes.CurrentCell.ColumnIndex)
            {
                case 1://Edit
                  //  modificar();   
                    break;
                case 2://Delete
                 //   eliminar();
                    break;

                default:
                    break;
            }
            btnEdit.Enabled = true;
            btnEliminar.Enabled = true;
        }
        private void OnDGWDeselectedItem()
        {
            btnEdit.Enabled = false;
            btnEliminar.Enabled = false;
            SelectedId = 0;
        }


        
    }
}
